import wepy from 'wepy'

export default class extends wepy.mixin {
  // 数据
  data = {
    // 搜索参数
    query: '',
    // 分类id
    cid: '',
    // 当前页
    pagenum: 1,
    // 单页数量
    pagesize: 10,
    // 商品列表
    goodsList: [],
    // 数据总数
    total: 0,
    // 底部加载到底显示
    isHidden: true,
    // 是否加载
    isLoading: false
  }

  // 页面加载事件
  onLoad(options) {
    this.query = options.query || ''
    this.cid = options.cid || ''
    // 获取商品数据
    this.getGoodsList()
  }

  // 获取商品列表数据
  async getGoodsList(cb) {
    this.isLoading = true
    const { data: res } = await wepy.get('/goods/search', {
      query: this.query,
      cid: this.cid,
      pagenum: this.pagenum,
      pagesize: this.pagesize
    })
    // 如果结果错误
    if (res.meta.status !== 200) {
      return wepy.showToast()
    }
    this.isLoading = false
    // 将数据赋值
    this.goodsList = [...this.goodsList, ...res.message.goods]
    this.total = res.message.total
    // 强制渲染
    this.$apply()
    cb && cb()
    console.log(res)
  }

  // 下拉刷新事件
  onPullDownRefresh() {
    this.pagenum = 1
    this.goodsList = []
    this.total = 0

    // 重新获取数据
    this.getGoodsList(() => {
      wepy.stopPullDownRefresh()
    })
  }

  // 上拉加载
  onReachBottom() {
    if (this.isLoading) {
      return
    }
    // 如果加载数量大于等于总数停止加载
    if (this.pagenum * this.pagesize >= this.total) {
      this.isHidden = false  // 显示底部不可加载
      return
    }
    this.pagenum++
    this.getGoodsList()
  }

  methods = {
    // 跳转到商品详情页
    goGoodsDetail(id) {
      wepy.navigateTo({ url: `/pages/goods_detail/main?goods_id=${id}` })
    }
  }
}
